<?php
class File{
    private $_dir; //默认路径
    
    const EXT = 'txt';//文件后缀
    
    public function _construct(){//构造函数
        $this->_dir = dirname(_FILE_).'/files/';
        //__FILE__     返回当前 路径+文件名
        // dirname(__FILE__) 返回当前文件路径的 路径部分
        //dirname(dirname(__FILE__));得到的是文件上一层目录名（不含最后一个“/”号）
    }
    
    //操作静态缓存业务
    public function cacheData($key,$value='',$cacheTime = 0){
        //cache缓存失效时间 =0 为永久，缓存时间+文件新建时间>当前时间，缓存失效
         $filename = $this->_dir.$key.self::EXT;
         //echo $filename."<br>";
         
         if ($value!==''){//将value值写入缓存
             if (is_null($value)){//出入null就删除
                 return @unlink($filename);//删除文件 成功返回true,失败或者不存在返回false
             }
             $dir = dirname($filename);
             if (!is_dir($dir)) mkdir($dir,0777);
        
             $cacheTime = sprintf('%011d',$cacheTime);//设置缓存，默认11位
             return file_put_contents($filename, $cacheTime.json_encode($value));//写入，$value需要转成字符串
             //返回成功是字符串字节数，否则是false
         }
         
         if (!is_file($filename)){//获取缓存
             return FALSE;
         }
         $content = file_get_contents($filename);//获取文件内的值
         $cacheTime = (int)substr($content,0,11);//截取0-11位缓存时间
         $value = substr($content, 11);
         if ($cacheTime !=0 && ($cacheTime + filemtime($filename)<time())){
          //缓存时间加上获取文件建立的时间小于当前时间，缓存就失效了，删除缓存
             unlink($filename);
             return FALSE;
         }else {
            //为失效就把缓存的内容值返回出来
             return json_decode($value,true);
         }
         
         
         
         
         
    }
}


// $file = new File();
// //$file->cacheData('test1','kkkk',180);
// $file->cacheData('test1');
